package com.itkjb.leisurely.resource.sys.model;

import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableName;
import com.baomidou.mybatisplus.annotation.Version;
import com.fasterxml.jackson.annotation.JsonIgnore;
import com.fasterxml.jackson.annotation.JsonProperty;
import com.itkjb.leisurely.core.base.BaseModelWithOperationFields;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import lombok.EqualsAndHashCode;
import lombok.experimental.Accessors;

import javax.validation.constraints.NotNull;
/**
 * <p>
 * 组织结构
 * </p>
 *
 * @author itkjb.com
 * @since 2020-07-02
 */
@Data
@EqualsAndHashCode(callSuper = true)
@Accessors(chain = true)
@TableName("sys_department")
@ApiModel(value="SysDepartmentModel-模型", description="组织结构")
public class SysDepartmentModel extends BaseModelWithOperationFields {

    private static final long serialVersionUID=1L;

    /**
     * id
     */
    @ApiModelProperty(value = "id")
    private String id;

    /**
     * 组织名字
     */
    @ApiModelProperty(value = "组织名字")
    @TableField("`dep_name`")
    private String depName;

    /**
     * 组织机构代码
     */
    @ApiModelProperty(value = "组织机构代码")
    @TableField("`dep_code`")
    private String depCode;

    /**
     * 父级id
     */
    @ApiModelProperty(value = "父级id")
    @TableField("`parent_id`")
    private String parentId;

    /**
     * 父级名字
     */
    @ApiModelProperty(value = "父级名字")
    @TableField("`parent_name`")
    private String parentName;

    /**
     * 拥有的子节点数量
     */
    @JsonIgnore
    @ApiModelProperty(value = "拥有的子节点数量")
    @TableField("`sub_count`")
    private Integer subCount;

    @ApiModelProperty(value = "是否含有子节点")
    @TableField(exist = false)
    @JsonProperty(access = JsonProperty.Access.READ_ONLY)
    private  boolean hasChildren;

    public boolean isHasChildren(){
        return  (this.getSubCount() !=null && this.getSubCount()>0 )?true: false ;
    }

    /**
     * 顶级组织id
     */
    @ApiModelProperty(value = "顶级组织id")
    @TableField("`top_id`")
    private String topId;

    /**
     * 组织结构级别 默认都是第一级，每往下一级加1
     */
    @ApiModelProperty(value = "组织结构级别 默认都是第一级，每往下一级加1")
    @TableField("`level`")
    private Integer level;

    /**
     * 组织的logo
     */
    @ApiModelProperty(value = "组织的logo")
    @TableField("`logo`")
    private String logo;

    /**
     * 负责人
     */
    @ApiModelProperty(value = "负责人")
    @TableField("`principal`")
    private String principal;

    /**
     * 联系电话
     */
    @ApiModelProperty(value = "联系电话")
    @TableField("`link_phone`")
    private String linkPhone;

    /**
     * 省id
     */
    @ApiModelProperty(value = "省id")
    @TableField("`province_id`")
    private String provinceId;

    /**
     * 市id
     */
    @ApiModelProperty(value = "市id")
    @TableField("`city_id`")
    private String cityId;

    /**
     * 县id
     */
    @ApiModelProperty(value = "县id")
    @TableField("`county_id`")
    private String countyId;

    /**
     * 县级以上名字 ，中间用-分割
     */
    @ApiModelProperty(value = "县级以上名字 ，中间用-分割")
    @TableField("`county_name`")
    private String countyName;

    /**
     * 详细地址
     */
    @ApiModelProperty(value = "详细地址")
    @TableField("`dep_address`")
    private String depAddress;

    /**
     * 组织描述
     */
    @ApiModelProperty(value = "组织描述")
    @TableField("`description`")
    private String description;

    /**
     * 状态  1可用 ：0 禁用
     */
    @ApiModelProperty(value = "状态  1可用 ：0 禁用")
    @TableField("`status`")
    private Integer status;

    /**
     * 排序，也可当级别用
     */
    @ApiModelProperty(value = "排序，也可当级别用")
    @TableField("`paixu`")
    private Integer paixu;

    /**
     * 备注
     */
    @ApiModelProperty(value = "备注")
    @TableField("`remark`")
    private String remark;

    /**
     * 乐观锁版本号
     */
    @ApiModelProperty(value = "乐观锁版本号")
    @Version
    @NotNull(message = "缺少版本号参数")
    @TableField("`lock_version`")
    private Long lockVersion;


}
